﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using LWJ_Tp_final.Models;

namespace LWJ_Tp_final_Administracion.Controllers
{
    [Authorize]
    public class LocalidadController : Controller
    {
        DataContext BaseDeDatos = new DataContext();

        public ActionResult Index()
        {
            var localidad = BaseDeDatos.Localidades;
            return View(model: localidad);
        }

        [HttpGet]
        public ActionResult Agregar()
        {
            return View();
        }
        [HttpPost]
        public ActionResult Agregar(Localidad localidad)
        {
            if (ModelState.IsValid)
            {
                foreach (var item in BaseDeDatos.Localidades)
                {
                    if (item.Nombre == localidad.Nombre || item.Codigo == localidad.Codigo)
                    {
                        ViewBag.Error = true;
                        return View("Agregar", model: localidad);
                    }
                }
                BaseDeDatos.Localidades.Add(localidad);
                BaseDeDatos.SaveChanges();
                return RedirectToAction("index", "localidad");
            }
            else
            {
                ViewBag.Error = true;
                return View("Agregar", model: localidad);
            }
        }


        public ActionResult Borrar(int id)
        {
            BaseDeDatos.Localidades.Remove(BaseDeDatos.Localidades.Find(id));
            BaseDeDatos.SaveChanges();
            return RedirectToAction("index", "localidad");
        }


        [HttpGet]
        public ActionResult Modificar()
        {
            return View();
        }
        [HttpPost]
        public ActionResult Modificar(Localidad localidad)
        {
            Localidad auxlocalidad = BaseDeDatos.Localidades.Find(localidad.Id);

            if (!(ModelState.IsValid))
            {
                ViewBag.Error = true;
                return View("Modificar", model: localidad);
            }
            else
            {
                auxlocalidad = BaseDeDatos.Localidades.Find(localidad.Id);

                if (localidad.Nombre != auxlocalidad.Nombre || localidad.Codigo != auxlocalidad.Codigo)
                {
                    foreach (var item in BaseDeDatos.Localidades)
                    {
                        if (item.Nombre == localidad.Nombre && item != auxlocalidad)
                        {
                            ViewBag.Error = true;
                            return View("Modificar", model: localidad);
                        }
                        else
                        {
                            if (item.Codigo == localidad.Codigo && item != auxlocalidad)
                            {
                                ViewBag.Error = true;
                                return View("Modificar", model: localidad);
                            }
                        }
                    }

                    auxlocalidad.Nombre = localidad.Nombre;
                    auxlocalidad.Codigo = localidad.Codigo;
                    BaseDeDatos.SaveChanges();
                    return RedirectToAction("index", "localidad");

                }
                else
                {
                    ViewBag.Error = true;
                    return View("Modificar", model: localidad);
                }

            }
        }
    }
}
